perm filename DRAW.F4[DRW,LCS]7 blob
sn#635554 filedate 1982-01-21 generic text, type T, neo UTF8
C***** FOLLOWING IS FILE 'DRAW.CMD' **********
C*** DRAW[DRW,LCS],MSSIO[MS,LCS],CB[DRW,LCS]
C*** ,DRAWSM[DRW,LCS],DPYIT[DRW,LCS],DREDIT[DRW,LCS],FILLER[DRW,LCS]
C*** ,CURSOR[MSS,LCS],SUBSLM[DRW,LCS]
C 'G' OR <CR> = GET. 'A'=ADD TO COMBINED FILE.
C P=PLOT
C IN DRAW SECTION: J=JUMP(INVIS. VECT.)
C F=JUMP AND BEGIN FILL SECTION. FX=EXIT AND FILL ALL.
C SINGLE ITEM IS RESTRICTED TO 350 WDS. 10 ITEMS OR 350 WDS PER FILE.
C 'O' MAKES CURRENT DPY INTO OVERLAY.
C VECTORS ARE PACKED 1 TO A WORD IN THE FOLLOWING STRANGE MANNER:
C ABCDEFGHI REPRESENTS A 9-DIGIT NUMBER.
C A=0=VISIBLE VECT., A=1=INVISIBLE, A=2=INVIS. AND START OF FILLED AREA.
C BCDE=THE X COORDINATE, B=0=POSITIVE, B=1=NEG. (THE RANGE IS + OR - 999)
C FGHI=THE Y COORDINATE, F=0=POSITIVE, F=1=NEG. (THE RANGE IS + OR - 999)
C THUS 100671025 MEANS INVIS. VECTOR TO X=67, Y=-25.
COMMON /SAV/JCLEF(10),KCLEF(10),NMLST(10) /INCR/INCR
CIRC COMMON /RC/MCLEF(400)
COMMON /RC/MCLEF(1100),IST(4000)
C1/82 COMMON /RC/MCLEF(400),IST(4000)
1 /GRID/GRID
CIRC 1 /DPY/NDP,IOV,GRID
C NDP=BUFFER NUM FOR OUTPUT, IOV=BUFFER NUM FOR INPUT
DIMENSION JST(1150),INP(72),V(30)
C1/82 DIMENSION JST(450),INP(72),V(30)
COMMON/ZN/SCLEF(2,1100),DDD /ED/KED,NEXT,NN,NX,NY,J
COMMON XX(100),G(100),NJ,QF(512),RF(512),S(100),K
COMMON/NFF/NF(513) /LL/LL /RZ/RSZ,RJB,CENTR
CIRC COMMON/LETS/LETS(14) /FL/IC,N,NQ,RZ
CIRC DATA LETS/'G','S','M','D','R','P','A','F','E','Z',
CIRC 1'O','L','W','H'/, ISIZE/2000/, RJB/-20./,CENTR/-26./
COMMON/LETS/LETS(15) /FL/IC,N,NQ,RZ
DATA LETS/'G','S','M','D','R','P','A','F','E','Z',
1'O','L','W','H','Q'/, ISIZE/2000/, RJB/-20./,CENTR/-26./
EQUIVALENCE (MM,SCLEF(1,1)),(V2,V(2)),(V3,V(3)),(N,INP),
1 (IVI,V1,V),(LETS(13),LW),(LETS(14),LH),(JC,INP(2)),(JS,
1 INP(3)),(LETS(1),LG),(LETS(2),LS),(LETS(3),LM),(LETS(4)
1,LD),(LETS(5),LR),(LETS(6),LP),(LETS(7),LA),(LETS(8),LF)
1,(LETS(9),LE),(LETS(10),LZ),(LETS(11),LO),(LETS(12),LLL)
1,(IST2,IST(2))
CIRC CALL ERRSET(0)
CIRC CALL DPYSET(ISIZE,1)
CIRC NDP=1
CIRC IOV=1
RSZ=0
GRID=0
39 MCLEF(1)=0
CIRC CALL DPYCLR
CIRC CALL DPYOUT(NDP)
CALL DPYSET(1,IST,4000)
CALL HYDPOG(1)
C IF AN OVERLAY HAS BEEN SETUP IT SHOULD STILL DISPLAY AFTER DPYCLR.
C THIS IS FOR 'Z' (ZERO THE DRAWING)
C DPYSET INITIALIZES GRAPHICS PACKAGE AND EXPANDS CORE FOR BUFFER.
MM=0
K=1
17 FORMAT(' *',$)
18 FORMAT(' H=HELP')
TYPE 18
91 TYPE 17
55 FORMAT(I,2F)
50 FORMAT(72A1)
500 XSZ=RSZ
ACCEPT 50,INP
CALL RREAD(INP,V)
C V ARRAY HAS ZEROS IF ALPHAS IN INP ARRAY.
RSZ=V2
GRID=V3
51 IF(RSZ.EQ.0)RSZ=XSZ
C TO SAVE SIZE FACTOR WHEN REDRAWING.
MORE=-1
CALL LO2UP(N)
CALL LO2UP(JC)
CALL LO2UP(JS)
IF(RSZ.EQ.0)RSZ=9.0
IF(GRID.NE.0.AND.N.NE.LP)CALL GRIDS
CIRC DO 191 K=1,14
DO 191 K=1,15
C G S M D R P A F E Z
191 IF(LETS(K).EQ.N)GO TO(30,36,32,33,32,70,36,79,38,39,
1 56,11,12,16,32)K
C O L W H Q
IF(N.NE.' ')TYPE 391
GO TO 91
391 FORMAT(' UNKNOWN COMMAND'/)
C 'O' MAKES CURRENT DPY INTO OVERLAY
16 TYPE 100
C 'HELP'
GO TO 91
11 CALL LIST(0)
C TYPE OUT LIST OF COORDINATES.
GO TO 91
12 TYPE 41
C WRITE LIST OF COORDS ON DISK FILE
CALL A5IN(JC)
IF(N.NE.LW)GO TO 13
CALL LIST(JC)
GO TO 91
CIRC13 OPEN(UNIT=1,FILE=JC)
13 CALL IFILE (1,JC)
14 READ(1,5,END=15)N,JC,JS,JZ
C READ IN EDIT FILE OF COORDS. N, X, Y, Z (N IS COUNT NUMB.)
JZ=JZ*100000000
C JZ=1=INVIS =2=START FILLER (INVIS)
CALL REPACK(JC,JS,JZ,MCLEF(N+1))
GO TO 14
15 MCLEF(1)=N+1
CIRC CALL DPYCLR
IST2=0
CALL DPYSET(1,IST,4000)
GO TO 334
33 IF(JS.NE.LLL)GO TO 38
N=LZ
C DEL=DELETE FROM COMB. FILE. (JS=LLL)
GO TO 36
38 KED=N
MM=MCLEF(1)
IF(MM.NE.0)GO TO 92
C ADD TO DRAWING?
GO TO 3
CIRC56 CALL DPYSET(400,2)
56 CALL POG2
C INITIALIZE THE OVERLAY
CIRC IOV=2
CIRC NDP=2
CIRC CALL RDRAW(2,MCLEF(1),MCLEF)
CALL RDRAW(3,2,MCLEF(1),MCLEF)
CIRC IOV=1
CIRC CALL DPYOUT(NDP)
C SAVE OVERLAY IN SPECIAL MEMORY
GO TO 91
36 CALL CMBN
GO TO 91
32 IF(JC.EQ.LE)GO TO 12
C RE=READ EDIT FILE FOR VECTORS
CALL DPYSET(1,IST,4000)
IST2=0
CALL SHIFT(MCLEF(2),MCLEF(1),N)
C FOR ROTATION OR MOVING AND DISTORTING ENTIRE PICTURE
J=1
JC=0
GO TO 333
291 FORMAT(A2,A5)
30 REREAD 291,NM,NM
CALL LO2UP(NM)
IF(JC.EQ.LM)NM=' '
IF(NM.NE.' ')GO TO 293
130 TYPE 41
IF(JC.EQ.LM)GO TO 194
IF(N.EQ.LS)GO TO 194
C 'GET' REINIT VARIOUS THINGS
MCLEF(1)=0
MM=0
K=1
194 IF(JC.EQ.LM)MORE=0
JQ=JC
JC=0
JM=1
IF(MCLEF(1).EQ.0)GO TO 193
JM=MCLEF(1)+1
193 CALL A5IN(NM)
IF(NM.EQ.' ')NM=LASTNM
IF(NM.EQ.' ')GO TO 91
IF(NM.EQ.'B'.OR.NM.EQ.'99')GO TO 91
C 'B' OR '99' WILL BACKUP
293 LASTNM=NM
IF(LOOKF(NM).EQ.0)GO TO 130
C 'FAIL' ROUTINE TO CHECK ON LOOKUP 0=FILE NOT FOUND.
CALL RDSAV(KCLEF,NMLST,M,NM,JST,-1)
C -1=READ
J=1
IF(KCLEF(2).EQ.0)GO TO 290
TYPE 1100
ACCEPT 55,J
J=J+1
C ITEMS ARE NUMBERED 0 THROUGH 9 (10 ITEMS).
IF(J.GT.10)GO TO 191
290 IC=KCLEF(J)+JST(KCLEF(J))-1
IF(IC.GT.1050)TYPE 1110
C1/82 IF(IC.GT.350)TYPE 1110
60 JZ=1
IF(MORE.EQ.0)JZ=JM
L=KCLEF(J)-1
M=JST(L+1)+JZ-1
IF(MORE.NE.0)GO TO 161
M=M-1
L=L+1
161 DO 61 K=JZ,M
L=L+1
61 MCLEF(K)=JST(L)
MCLEF(1)=M
1100 FORMAT(' ITEM NUM?'/)
7 IF(MORE)GO TO 70
DO 771 K=2,JM-1
771 IF(MCLEF(K).GE.200000000)GO TO 772
GO TO 70
C PUTS FILLER TO END
C MOVES OUTLINE UP FRONT
772 M=MCLEF(1)
DO 773 L=K,JM
M=M+1
773 MCLEF(M)=MCLEF(L)
K=JM-K
1774 DO 774 L=JM,M
774 MCLEF(L-K)=MCLEF(L)
CALL DPYSET(1,IST,4000)
IST2=0
GO TO 3
70 IF(N.NE.LP)GO TO 3
CIRC OPEN(UNIT=1,FILE='PLOT.PLT',MODE='IMAGE')
CIRC CALL SAVBUF(1)
C WRITES VERSATEC FILE PLOT.PLT
CIRC CLOSE(UNIT=1)
CIRC TYPE 441
CIRC GO TO 91
CIRC441 FORMAT(' ******* PLOT.PLT WAS WRITTEN *****')
3 IF(N.NE.LD)MM=0
C RESET IF NOT GOING TO DRAWIT
333 IF(N.EQ.LP)GO TO 337
CC CALL DPYCLR
IF(N.GE.0)GO TO 337
IF(N.EQ.LG)GO TO 337
IF(N.EQ.LM)GO TO 337
IF(N.NE.LR)GO TO 92
337 IF(JS.EQ.LZ)GO TO 306
IF(JS.NE.LS)GO TO 338
CALL SMOOTH(JS)
GO TO 436
338 IC=-1
MM=1
DO 335 K=2,MCLEF(1)
IF(MCLEF(K).LT.200000000)GO TO 335
IC=K
GO TO 334
C FOR 1ST LOC. OF MCLEF IN FILLER
335 CONTINUE
CIRC334 CALL RDRAW(2,MCLEF(1),MCLEF)
334 CALL RDRAW(1,2,MCLEF(1),MCLEF)
C 1=DPYOUT(1)
CIRC CALL DPYOUT(NDP)
GO TO 91
79 IF(IC.LT.0)GO TO 91
C FILLS IT.
C IC=-1 IF NO FILLER WAS REQUESTED WHILE DRAWING.
JZ=N
KK=0
IF(JC.NE.LS)GO TO 206
C TYPE 'FS' TO FILL AND SMOOTH
306 CALL SMOOTH(0)
C SMOOTHS AND FILLS
GO TO 436
206 RR=RSZ
DO 205 J=IC,MCLEF(1)
CALL UNPACK(M,N,LL,MCLEF(J))
KK=KK+1
NF(KK)=0
IF(LL.GE.100000000)NF(KK)=3
QF(KK)=(M+RJB)*RR
205 RF(KK)=(N+CENTR)*RR
NF(1)=KK
CALL FILLQ(QF,RF,NF)
436 GO TO 91
5 FORMAT(12I)
100 FORMAT(' G=GET, GM=GET MORE, S=SAVE, D=DRAW, M=MOVE, R=ROTATE,'/
1' E=EDIT, P=PLOT, RE=READ EDIT FILE, W=WRITE EDIT FILE'/
1' LI=LIST COORDINATES'/
1,' DEL=DELETE ITEM FROM FILE, O=OVERLAY, Z=ZERO DRAWING'/,
1' F=FILL N1=IMAGE SIZE, N2=1=GRID -1=DELETE OVERLAY'/)
C N1=20 TO CHANGE SHAPE
CIRC92 CALL DPYCLR
C92 CALL HYDPOG(1)
92 CALL DPYSET(1,IST,4000)
CIRC CALL RDRAW(2,MCLEF(1),MCLEF)
CALL RDRAW(1,2,MCLEF(1),MCLEF)
C THIS CLEARS FILLER LINES
CALL DRAWIT
N=0
GO TO 3
403 FORMAT(' WRITE OVER ',A5,'.DMD? ',$)
41 FORMAT(' TYPE FILE NAME'/)
110 FORMAT(' TOTAL WDS=',I3)
1110 FORMAT(' ********************************',/
1 ' ***** WARNING - LIMIT=350 ******',/
1 ' ********************************')
END